作者:编程艺术思维
来源:urlify.cn/jqUree
哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里,大家记得将咱们的公众号 加星标置顶 ,在此真诚的表示感谢~
正文如下:
1、no code
https://github.com/kelseyhightower/nocode这是一个 GitHub 上的项目,目前标星 34k。它的牛逼之处在于它 基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务,安全可靠。2、洗牌算法
这个代码很简单,只有两行代码,但是却可以实现这个功能:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。代码如下(JDK中Collections.shuffle()也是这样实现的):for(int i = n - 1; i >= 0 ; i -- )
// rand(0, i) 生成 [0, i] 之间的随机整数
swap(arr[i], arr[rand(0, i)])
3、睡眠排序
public class SleepSort {
public static void main(String[] args) {
int[] ints = {1,4,7,3,8,9,2,6,5};
SortThread[] sortThreads = new SortThread[ints.length];
for (int i = 0; i < sortThreads.length; i++) {
sortThreads[i] = new SortThread(ints[i]);
}
for (int i = 0; i < sortThreads.length; i++) {
sortThreads[i].start();
}
}
}
class SortThread extends Thread{
int ms = 0;
public SortThread(int ms){
this.ms = ms;
}
public void run(){
try {
sleep(ms*10+10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(ms);
}
}
它原理是构造 n 个线程,它们和这 n 个数一一对应。初始化后,线程们开始睡眠,等到对应的数那么多个时间单位后各自醒来,然后输出它对应的数。这样最小的数对应的线程最早醒来,这个数最早被输出。不要问时间复杂度,时间复杂度在这个排序上已经毫无意义!4、AI核心代码
while True:
print(input('').replace('吗','').replace('?','!'))
5、获取第二天时间
// 人才人才
thread.sleep(86400*1000L);
6、0x5f375a86
这个数字是某引擎的源代码里包括的一个反平方倒数的算法,其速度要比标准的牛顿迭代法快上 4 倍,而其中的关键是一行神秘的代码和一个莫名其妙的数字:[ i = 0x5f3759df - ( i >> 1 ); // what the fuck? ] 。代码如下:没有人知道Carmack是怎么发现这个数字的。普度大学的数学家Lomont觉得很好玩,决定要研究一下卡马克弄出来的这个猜测值有什么奥秘。Lomont也是个牛人,在精心研究之后从理论上也推导出一个最佳猜测值,和卡马克的数字非常接近, 0x5f37642f。传奇并没有在这里结束。Lomont计算出结果以后非常满意,于是拿自己计算出的起始值和卡马克的神秘数字做比赛,看看谁的数字能够更快更精确的求得平方根。结果是卡马克赢了... 谁也不知道卡马克是怎么找到这个数字的。最后Lomont怒了,采用暴力方法一个数字一个数字试过来,终于找到一个比卡马克数字要好上那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴力得出的数字是0x5f375a86。Lomont为此写下一篇论文,"Fast Inverse Square Root"。7、hello world
嗯,这个一定要写上。不管你学的是什么语言,都肯定写过hello world的!看完这篇文章,你觉得那个更牛逼?欢迎在留言区与30w+Java开发者一起讨论~
热门推荐: